package com.zmn.plat.business.interfaces.company;

import com.zmn.common.dto.VtDTO;
import com.zmn.plat.common.dto.servcategory.ServCategoryDRO;
import com.zmn.plat.common.exception.PlatException;

import java.util.List;

/**
 * 描述：根据省市区街道ID查询哪些服务公司开通了这些区域
 *
 * @author: tanghongjun
 * @time: 2020/1/8 14:54
 */
public interface ManageCompanyAreaBService {

    /**
     * 描述: 根据服务商ID和城市ID查询开通的服务分类，如果城市ID为空，则查询该服务公司开通的所有城市下的服务分类
     *
     * @param manageCompanyId
     *            服务公司ID 不能为空
     * @param cityId
     *            城市ID，可为空
     * @return ResponseDTO《List《ServCategoryDRO》》 开通服务分类集合
     * @auther tanghongjun
     * @since 2020/3/19 15:01
     */
    List<ServCategoryDRO> listServCategByManageCompanyIdAndCityId(Integer manageCompanyId, Integer cityId) throws PlatException;

    /**
     * 描述: 根据服务商ID、服务分类ID和城市ID查询开通的一级产品分类集合，如果城市ID为空，则查询该服务公司开通的所有城市下开通的一级产品分类集合
     *
     * @param manageCompanyId
     *            前台服务公司ID 不能为空
     * @param servCategId
     *            前台服务分类ID 不能为空
     * @param cityId
     *            城市ID，可为空
     * @return ResponseDTO《List《VtDTO》》 开通后台一级产品分类集合
     * @auther tanghongjun
     * @since 2020/3/19 15:01
     */
    List<VtDTO> listCategOneByManageCompanyIdAndServCategIdAndShowTypeAndCityId(Integer manageCompanyId, Integer servCategId, Integer cityId) throws PlatException;

    /**
     * 描述: 根据服务商ID和城市ID查询开通开通的二级产品分类集合，如果城市ID为空，则查询该服务公司开通的所有城市下开通的二级产品分类集合
     *
     * @param manageCompanyId
     *            服务公司ID 不能为空
     * @param servCategId
     *            服务分类ID 不能为空
     * @param categOneId
     *            一级产品分类ID 不能为空
     * @param cityId
     *            城市ID，可为空
     * @return ResponseDTO《List《VtDTO》》 开通二级产品分类集合
     * @auther tanghongjun
     * @since 2020/3/19 15:01
     */
    List<VtDTO> listCategTwoByManageCompanyIdAndServAndCategOneIdAndShowTypeAndCityId(Integer manageCompanyId, Integer servCategId, Integer categOneId, Integer cityId)
        throws PlatException;

}
